<?php
/**
 * Класс для распарсивания конфигов XML.
 * 
 * @package mumak
 * @subpackage core
 */

/**
 * RL_XMLConfigParser class.
 * 
 * @package mumak
 * @subpackage core
 */
class RL_XMLConfigParser
{

	/**
	 * Флажок, показывающий, включен ли SimpleXML.
	 *
	 * @staticvar bool
	 */
	static private $simplexml_disabled = null;

	/**
	 * Конструктор проверяет наличие SimpleXML.
	 *
	 * @return RL_XMLConfigParser
	 */
	public function __construct()
	{
		if(self::$simplexml_disabled == null) {
			if(!function_exists("simplexml_load_string")) {
				self::$simplexml_disabled = true;
			} else {
				self::$simplexml_disabled = false;
			}
		}

		if(self::$simplexml_disabled === true) {
			self::throwException();
		}
	}

	/**
	 * Парсит XML-строку.
	 *
	 * @param string $string
	 * @return SimpleXMLElement
	 */
	public function parseString( $string )
	{
		if(self::$simplexml_disabled === true) {
			return self::throwException();
		}

		return simplexml_load_string( $string );
	}

	/**
	 * Выбрасывает исключение о том, что SimpleXML не включен.
	 *
	 * @return void
	 */
	private static function throwException ()
	{
		throw new RL_Exception("SimpleXML disabled. Turn it on");
	}
}

